/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufpb.projetoesa.negocio;

import br.ufpb.projetoesa.dados.TurmaDAO;
import br.ufpb.projetoesa.dados.TurmaDAOBin;
import br.ufpb.projetoesa.dados.TurmaDAOFactory;
import br.ufpb.projetoesa.dados.TurmaDAOFileFactory;
import br.ufpb.projetoesa.exceptions.AtualizacaoDeTurmaException;
import br.ufpb.projetoesa.exceptions.TurmaInexistenteException;
import br.ufpb.projetoesa.exceptions.TurmaInvalidaException;
import br.ufpb.projetoesa.exceptions.TurmaVaziaException;
import br.ufpb.projetoesa.negocio.Turma;
import java.util.List;

/**
 *
 * @author Rennan
 */
public class CadastroTurma {
    
    private TurmaDAOFactory turmaF = TurmaDAOFactory.getTurmaDAOFactory(TurmaDAOFactory.FILE);
    private TurmaDAOBin turmaDAO;
    
    public CadastroTurma(){
        turmaDAO = (TurmaDAOBin)turmaF.getTurmaDAO(TurmaDAOFileFactory.BIN);
        turmaDAO.criarArquivo();
    }
    
    public void addTurma(Turma t) throws TurmaInvalidaException{
        turmaDAO.criarArquivo();
        turmaDAO.recuperaTurmas();
        turmaDAO.insert(t);
        turmaDAO.salvaTurmas();
    }
    
    public Turma getTurma(String id) throws TurmaInexistenteException{
        turmaDAO.recuperaTurmas();
        return (Turma)turmaDAO.findID(id);
    }
    
    public List<Turma> getTurmas(){
        turmaDAO.criarArquivo();
        turmaDAO.recuperaTurmas();
        
        return turmaDAO.getTurmas();
    }
    
    public void removerTurma(Turma t) throws TurmaInexistenteException, TurmaVaziaException{
        turmaDAO.criarArquivo();
        turmaDAO.recuperaTurmas();
        
        turmaDAO.delete(t);
        
        turmaDAO.salvaTurmas();
    }
    
    public void removerTurma(String id) throws TurmaInexistenteException, TurmaVaziaException{
        turmaDAO.delete(turmaDAO.findID(id));
        turmaDAO.salvaTurmas();
    }
    
    public void atualizarTurma(Turma t) throws AtualizacaoDeTurmaException{
        turmaDAO.update(t);
        turmaDAO.salvaTurmas();
    }
    
    public int size(){
        turmaDAO.recuperaTurmas();
        return turmaDAO.size();
    }
    
    public void clear(){
        turmaDAO.removerArquivo();
    }
}

